package com.cr4y0n.hot100;

/**
 * @author cr4y0n
 * <a href="https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=top-100-liked">移动零</a>
 * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
 * 请注意 ，必须在不复制数组的情况下原地对数组进行操作。
 * 示例 1:
 * 输入: nums = [0,1,0,3,12]
 * 输出: [1,3,12,0,0]
 * 示例 2:
 * 输入: nums = [0]
 * 输出: [0]
 */
public class _283_MoveZeroes {
    static class Solution {
        public void moveZeroes(int[] nums) {
            int left = 0;
            for (int right = 0; right < nums.length; right++) {
                if (nums[right] != 0) {
                    int tmp = nums[left];
                    nums[left++] = nums[right];
                    nums[right] = tmp;
                }
            }
        }
        //
        //public static void swap(int[] nums, int i, int j) {
        //    int tmp = nums[i];
        //    nums[i] = nums[j];
        //    nums[j] = tmp;
        //}
    }
}
